/**
 * 版权所有 2009-2012山东新北洋信息技术股份有限公司
 * 保留所有权利。
 */
package com.linyaonan.leetcode.easy._226;

import org.w3c.dom.NodeList;

/**
 *
 * 翻转一棵二叉树。
 *
 * 示例：
 *
 * 输入：
 *
 *      4
 *    /   \
 *   2     7
 *  / \   / \
 * 1   3 6   9
 * 输出：
 *
 *      4
 *    /   \
 *   7     2
 *  / \   / \
 * 9   6 3   1
 *
 *
 * @ProjectName: leetcode
 * @Package: com.linyaonan.leetcode.easy._226
 * @ClassName: InvertBinaryTree
 * @Author: linyaonan
 * @Date: 2019/12/16 15:09
 */
public class InvertBinaryTree {

    public TreeNode invertTree(TreeNode root) {
        if (root == null) {
            return null;
        }
        revertNode(root);
        return root;
    }

    private void revertNode(TreeNode node) {
        if (node != null) {
            // 引入临时变量
            TreeNode temp;
            // 左右节点交换
            temp = node.left;
            node.left = node.right;
            node.right = temp;
            // 递归交换
            revertNode(node.left);
            revertNode(node.right);
        }
    }
}
